package common

import (
	"fmt"
	"time"
)

// 运行计数器  TODO 为什么云端服务是-20
var _runTimes int64

// 完成定时任务
func DoCrontab() {
	_runTimes = _runTimes + 1

	// 60秒周期
	if _runTimes%10 == 0 {
		fmt.Printf("============================: %v\n", _runTimes)
		//_, err := _smsClient.ReportServiceStatus(context.Background(), &api.Service{Type: global.ServiceType4CloudInteractive})
		//if err != nil {
		//	glog.Error("云端交互服务上报服务状态失败！")
		//	return
		//}

		// glog.Info("云端交互服务上报服务状态成功")
	}

	// 60秒周期
	if _runTimes%60 == 0 {
		//_, err := _smsClient.ReportServiceStatus(context.Background(), &api.Service{Type: global.ServiceType4CloudInteractive})
		//if err != nil {
		//	glog.Error("云端交互服务上报服务状态失败！")
		//	return
		//}

		// glog.Info("云端交互服务上报服务状态成功")
	}

	//5分钟
	if _runTimes%300 == 0{
		//遍历240个lora温度传感器，存储数据
		//StorageLoraSensorDataBy5Minute()
	}


	// 获取当前时间类型
	timeMode := GetTimeMode()
	// 做每天任务
	if timeMode%11 == 0 {
		// global.TransferDataCache()
	}

}

// CreateTicker 创建定时器
func CreateTicker(interval int64, doJob func()) {
	// 启动个定时器
	ticker := time.NewTicker(time.Duration(interval) * time.Millisecond)

	done := make(chan bool)
	go func() {
		for {
			select {
			case <-done:
				return
			case <-ticker.C:
				doJob()
			}
		}
	}()
}

// GetTimeMode 获取当前时间类型
func GetTimeMode() int {
	// 默认返回值
	mode := 1
	// 获取当前时间
	timestamp := time.Now()

	// 判断条件：
	// 1.整5分钟
	if timestamp.Minute()%5 == 0 {
		mode = mode * 3
	}

	// 2.整10分钟
	if timestamp.Minute()%10 == 0 {
		mode = mode * 5
	}

	// 3.整点
	if timestamp.Minute() == 0 {
		mode = mode * 7
	}

	// 4.每日零点
	if timestamp.Hour() == 0 && timestamp.Minute() == 0 {
		// 4-1.普通零点
		mode = mode * 11

		// 4-2.每周一零点
		if timestamp.Weekday() == 1 {
			mode = mode * 13
		}

		// 获取昨天
		yesterday := time.Now().AddDate(0, 0, -1)
		// 4-3.每月第一天零点：今天与昨天月份不一样
		if yesterday.Month() != timestamp.Month() {
			mode = mode * 17
		}
	}

	return mode
}

//
//import (
//	"cfp-go-test/tools/rsa"
//	"crypto"
//	"encoding/base64"
//	"encoding/json"
//	"fmt"
//	"github.com/telanflow/quick"
//	"io/ioutil"
//)
//
//// 初始化session
//func InitSession() *quick.Session {
//	// cookieJar
//	cookieJar, err := quick.NewCookieJar()
//	if err != nil {
//		panic(err)
//	}
//	// create session, use default global session
//	session := quick.NewSession()
//	session.InsecureSkipVerify(true)
//	session.SetCookieJar(cookieJar)
//	return session
//}
//
//func GetToken(session *quick.Session) string {
//	// 传参
//	// 平台用户测试数据，转成字符串的形式
//	platform_and_user_str := "mobilePhone=13612581258;platformId=10000;platformUserId=601258;userName=zytestyi"
//	// 获取测试平台的公私钥以及云缴费平台的公钥
//	// 对数据进行加密
//	cfp_pub_key := "/home/kai/go/src/zyyh/cfp-go-test/rsa_key/cfp_pub.pem"
//	test_priv_key := "/home/kai/go/src/zyyh/cfp-go-test/rsa_key/test_priv.pem"
//	// 对数据进行加密
//	plain := rsa.EncryptPath(platform_and_user_str, cfp_pub_key)
//	// 对数据进行签名
//	sign_data := rsa.SignPath(platform_and_user_str, test_priv_key, "pkcs8", crypto.SHA256)
//	parms := map[string]string{
//		"platformId": "10000",
//		//"plain":      hex.EncodeToString(plain),
//		"plain": base64.StdEncoding.EncodeToString(plain),
//		//"signData":   hex.EncodeToString(sign_data),
//		"signData": base64.StdEncoding.EncodeToString(sign_data),
//	}
//	fmt.Println(parms)
//	//parms_string := map[string]interface{}{
//	//	"platformId": 10000,
//	//	"plain":      "RNLs9H6R46zcA1EI9zZ320hV8l67yQTWqCcXE%2BIwvDYbfFFu6hMSBZ66HFieh9RDITfEvBNgrMjcUR3fGg8HD39Mh6Pn%2BlgcLadmpytlX35u2lhRMSSquI1jGU5ss3yEg8T8Q/63X47V4XzfMy9iyeq8Qz/NrXTyboCEPu4XLd5v5wJtI7eEPJmVg%2BFnk1HRcXtm2VyPxz1t6iteJHGIn8bBT6uGzkCnMDBj8ZHNYM3iqWRho4YtljC%2BD4vjUGyu%2Bd0KYJoIVbhPcaOYRXKEZhkFZx/mQSovTTn3%2Bf7m0jc2IfzRdGjS0XJcqO4EiV/wbTwknwJX4e7DP8YJUPGCcA%3D%3D",
//	//	"signData":   "FpNj2Wo1mArDhMsRIW80d1m6O93rOEdC8GLP0ceCSoPUOfdGmiMmntOnKTtkh892w0t3/CDSamKnXxsgvNIGoBoHMZxjYG5yLlzCZ4zR1oZMsArRZLIYsngg8NPqeb//mjduxOpuVPf%2BPY1z1xiGWy8g0hxW3SskkKmZMburwem3DWlWPYa6t0DzaHNanEubFlF%2BvxMysEHmZRyYM004E65Z3ganfnoDVdNdvkoPJCFZ%2B77EYW%2B%2BciJ06j1IBHoKD3aSySiLMVCNZn2AbnFB1kb6oRVzH6qpf0jh5Tr0HI7Nw3/Q0g57wtcTIfFxqPbcJjwLYQroNZtNInlEGLUdnQ%3D%3D",
//	//}
//	// 发起get请求
//	//resp, err := session.Get(config.CFP_U8_URL+"/api/access/verifyplatform", quick.OptionQueryString(parms))
//	resp, err := session.Get("http://10.102.46.158:7701"+"/api/access/verifyplatform", quick.OptionQueryString(parms))
//	if err != nil {
//		return ""
//	}
//	fmt.Println("=================================", resp)
//	// 处理返回值
//	body, err := ioutil.ReadAll(resp.Body)
//	if err != nil {
//		panic(err)
//	}
//	// json string -> map[string]interface{}
//	var resp_dict map[string]interface{}
//	err = json.Unmarshal(body, &resp_dict)
//	// 结果：map字典
//	if err != nil {
//		panic(err)
//	}
//	return resp_dict["token"].(string)
//}
